package interview.huawei.tjt.training.huaweijishitiku;

import java.util.Scanner;

// 密码验证合格程序
public class HJ20 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while ( sc.hasNextLine() ) {
            // 定义一个boolean类型的数组用来判断第二个条件(初始值为false)：包括大小写字母.数字.其它符号,以上四种至少三种
            boolean[] flag = new boolean[4];
            // 定义count来对满足第二个条件的几种
            int count = 0;

            String str = sc.nextLine();

            // 第一个条件：长度超过8位
            if ( str.length() <= 8 ) {
                System.out.println("NG");
                continue;
            }

            // 第二个条件
            for ( int i = 0; i < str.length(); i++ ) {
                if ( str.charAt(i) >= 'A' && str.charAt(i) <= 'Z' ) {
                    flag[0] = true;
                } else if ( str.charAt(i) >= 'a' && str.charAt(i) <= 'z' ) {
                    flag[1] = true;
                } else if ( str.charAt(i) >= '0' && str.charAt(i) <= '9' ) {
                    flag[2] = true;
                } else {
                    flag[3] = true;
                }
            }
            for ( int j = 0; j < flag.length; j++ ) {
                if ( flag[j] ) {
                    count ++;
                }
            }

            // 第三个条件：不能有长度大于2的不含公共元素的子串重复 （注：其他符号不含空格或换行）
            boolean sign = true;
            for ( int i = 0; i < str.length() - 5; i++ ) {
                for (int j = i + 3; j < str.length() - 2; j++ ) {
                    if ( str.charAt(i) == str.charAt(j) && str.charAt(i+1) == str.charAt(j+1) && str.charAt(i+2) == str.charAt(j+2) ) {
                        sign = false;
                    }
                }
            }

            if ( count >= 3 && sign == true ) {
                System.out.println("OK");
            } else {
                System.out.println("NG");
            }

        }
    }

}
